package com.android.awacs.gps;

import java.util.List;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

import android.graphics.drawable.Drawable;
import android.os.Bundle;

import com.android.awacs.R;

/*
 * Le shield GPS d'Arduino utilise le format suivant :
 * Latitude: 44 24.8191N 
 * Longitude: 000 43.2812E
 * ---> [Adresse IRL]: Rue Louis Sue, Villeneuve-Sur-Lot 
 * 
 * Android & Google Map utilisent le format suivant :
 * String coordinates[] = {"1.352566007", "103.78921587"}; 
 * double lat = Double.parseDouble(coordinates[0]); 
 * double lng = Double.parseDouble(coordinates[1]); 
 * p = new GeoPoint( (int) (lat * 1E6), (int) (lng * 1E6));
 * 
 * La latitude et la longitude sont codes en microdegres, par exemple pour
 * 40.747778 on multiplie par 1e6 pour obtenir 40747778
 * 
 * Pour passer de l'une a l'autre:
 * 44 + 24.8191/60 = +44,413651667 (+ pour Nord et - pour Sud) 
 * 000 + 43.2812/60 = +0,721353333 (+ pour Est et - pour Ouest) 
 * -----------> 44.413651667, 0.721353333
 * 
 * Ex : private final String GPS_TESTING = "GPS 44 24.8191N 000 43.2812E Villeneuve-sur-Lot Test";
 * 
 * Ce duo entre dans Google Map indique bien la rue Louis Sue.
 */

// Service lance a la reception d'un SMS-GPS
public class GoogleMap extends MapActivity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		// Afficher la GUI principale
		setContentView(R.layout.googlemap);

		// Extraction du bundle donne en entree
		Bundle b = this.getIntent().getExtras();
		String lati = b.getString("Latitude");
		String longi = b.getString("Longitude");
		String loca = b.getString("Localisation");
		String model = b.getString("Model");

		// Creation de la map
		MapView mapView = (MapView) findViewById(R.id.mapView);
		mapView.setBuiltInZoomControls(true);

		// Creation de l'overlay
		List<Overlay> mapOverlays = mapView.getOverlays();
		Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
		HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, this);

		// Creation du point geographique ou se trouve l'emetteur GPS
		double final_lati = Double.parseDouble(lati);
		double final_longi = Double.parseDouble(longi);
		GeoPoint point = new GeoPoint((int) (final_lati * 1E6), (int) (final_longi * 1E6));
		OverlayItem overlayitem = new OverlayItem(point, loca, model);

		// Mise en action de l'overlay
		itemizedoverlay.addOverlay(overlayitem);
		mapOverlays.add(itemizedoverlay);
	}

	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}
}